<?php

class mymodule extends Module {

	public function __construct () {
		parent::__construct (__CLASS__);
	}
	
	public function __default () {
		$typesController = TypesController::getInstance ();
		
		// Получаем типы "статья" и "ссылка"
		$oTypeArticle = $typesController->getTypeByName ('article');
		$oTypeLink = $typesController->getTypeByName ('link');
		
		$onPage = 12; // Количество объектов на странице
		
		$currentPage = getRequest ('page', 'int'); // Получаем текущюю страницу из массива $_REQUEST
		if ($currentPage != 0) {
			$currentPage--;
		}
		
		$sel = new Selection; // Иницализируем выборку списка объектов
		$sel->addType ($oTypeArticle); // Добавляем тип статьи к типам выбираемых объектов
		$sel->addType ($oTypeLink); // Аналогично с ссылкой
		
		$sel->addFilter ('draft', '0'); // Фильтр, запрещающий вывод черновиков
		
		$sel->setOrder ('pubdate', false); // Сортируем по дате публикации, новые сверху
		
		$sel->addLimit ($currentPage*$onPage, $onPage); // Добавляем лимит
		
		// Получаем список объектов с помощью специального метода
		$aObjects = ObjectsController::getInstance()->getObjectsList ($sel->getList ());
		
		$response = new ModuleResponse; // Инициализируем объект, который должен возвратить метод
		$response->setTemplate ('mymodule/index'); // Указываем шаблон без расширения файла
		
		// Пробегаемся по всем загруженным объектам и добавляем их в "ответ"
		foreach ($aObjects as $object) {
			$response->addObject ($object);
		}
		
		// Добавляем объект класса Array2XML, который будет переведен в соответствующую XML-таблицу
		// для постраничной навигации
		$response->addObject (new Array2XML ('pages', array (
			'onpage' => $onPage,
			'total' => $sel->getTotalCount (),
			'page' => ++$currentPage
		)));
		
		return $response;
	}
	
}